<?php
/**
 * Controlador de ofertas de estagio
 * @author Emanuel Melo
 */
class ofertas extends PC4_Controlador_CRUDAdmin {
	
	function __construct() {
		parent::__construct(array(new Filtro_Admin_Empresa()));
		$this->layout->view = 'empresa';
		$modelo = new PC4_Crud_M2Ns('ofertas', array('ofertas_rel_competencias'), array('nome' => 'repetida'));
		$this->init($modelo, 'admin/ofertas');
		$this->usuario = $this->porteiro->getUsuario();
		
		$mCompetencia = new PC4_Crud_Abstrato('competencias');
		$rsCompetencias = $mCompetencia->olista('nome');
		
		$competencias = array();
		foreach ($rsCompetencias as $r) {
			$competencias[$r->id] = $r->nome;
		}
		$this->dados['competencias'] = $competencias;
		#$this->layout->view = 'blank';
		
	}
	
	function edita($id, $campo = 'id') {
		$mCompetenciaSelecionada = new PC4_Crud_Abstrato('ofertas_rel_competencias');
		$this->db->select('c.nome, c.id, o.obrigatorio');
		$this->db->join('competencias c', 'c.id = o.id_competencias', 'inner');
		$this->db->join('ofertas of', 'of.id = o.id_ofertas');
		$rsCompetenciasSelecionadas = $mCompetenciaSelecionada->consulta(array('of.id_empresas' => $this->usuario['id'], 'of.id' => $id));
		$competenciasSelecionadas = array();
		foreach ($rsCompetenciasSelecionadas as $r) {
			if ($r->obrigatorio) {
				$competenciasSelecionadas['competencias_obrigatorias'][$r->id] = $r->nome;
			}
			else {
				$competenciasSelecionadas['competencias_desejaveis'][$r->id] = $r->nome;
			}
		}
		$this->dados['competenciasSelecionadas'] = $competenciasSelecionadas;
		parent::edita($id, $campo);
	}
	
	protected function trataForm($id = 0) {
		$campos = parent::trataForm($id);
		$campos['id_empresas'] = $this->usuario['id'];
		// Formando as competencias obrigatorias
		foreach ($campos['competencias_obrigatorias'] as $idCompetencia) {
			$campos['ofertas_rel_competencias'][] = array(
				'id_competencias' => $idCompetencia,
				'obrigatorio' => 1
			);
		}
		// Formando as competencias desejaveis
		foreach ($campos['competencias_desejaveis'] as $idCompetencia) {
			$campos['ofertas_rel_competencias'][] = array(
				'id_competencias' => $idCompetencia,
				'obrigatorio' => 0
			);
		}
		$campos['remuneracao'] = sqlPreco($campos['remuneracao']);
		$campos['slug'] = $this->modelo->slug($campos['nome'], $id);
		unset($campos['competencias_obrigatorias'], $campos['competencias_desejaveis'], $campos['todas_competencias']);
		return $campos;
	}
	
	function trataNovo() {
		// Instanciando a classe de email
		$email = new PC4_Util_Email();
		// Preparando para inserir no banco a nova ofertas e suas competencias
		$campos = $this->trataForm();
		$retorno = $this->modelo->insere($campos);
		//Preparando para enviar o email para os sortudos
		if (is_numeric($retorno)) {
			$mEstudante = new PC4_Crud_Abstrato('estudantes');
			$assunto = 'Nova oferta disponível, aproveite!';
			$this->db->select('e.email, o.*');
			$this->db->join('estudantes_rel_competencias erc', 'erc.id_estudantes = e.id', 'inner');
			$this->db->join('ofertas_rel_competencias orc', 'orc.id_competencias = erc.id_competencias', 'inner');
			$this->db->join('ofertas o', 'o.id = orc.id_ofertas', 'inner');
			$this->db->group_by('e.id');
			$rsEstudantes = $mEstudante->consulta(array('orc.id_ofertas' => $retorno));
			$mensagem = $this->load->view('include/email_nova_oferta', array('r' => $rsEstudantes[0]), true);
			// Enviando o email para os sortudos selecionados
			$destinatarios = array();
			foreach ($rsEstudantes as $r) {
				$destinatarios[] = $r->email;
			}
			$email->sendMail($assunto, $mensagem, $destinatarios, 'clicktrainee@clicktrainee.com.br', 'Click Trainee');
			
		}
		$this->resultadoNovo($retorno, $campos);
	}
	
}